iT邦幫忙

2021 iThome 鐵人賽

DAY 7
2
自我挑戰組

馬克的軟體架構小筆記系列 第 7

30-7 之分層架構 From Patterns of Enterprise Application Architecture

  • 分享至 

  • xImage
  •  

接下來的幾篇文章,我們將要幾乎可以說是軟體架構模式始祖 ( 大概 ) 的這本書 :

企業應用架構模式 Patterns of Enterprise Application Architecture - Martin Fowler

為主要內容並輔以 《 Clean Architecture 》 來理解現階段基本的分層架構長什麼樣子。

會開始寫這主題主要的原因在於 :

我搞的好混亂啊 ~ 怎麼每一個人對每個 layer 與名詞的定義都不太一樣啊…

所以這裡我才從最根源的 《 企業應用架構模式 》開始下手。

最基本的分層 - 3-Tier

為什麼要分層 ? 原因就是我們前面幾篇文章,一直提的兩個軟體設計基本原則 :

  • 低耦合
  • 高內聚

都是為了達到這兩個原則。

然在 《 企業應用架構模式 》 這本書中,有提到最基本的分層架構為 3-tier layer,分為以下三層 :

  • 表達層 ( Presentation )
  • 領域層 ( Domain )
  • 資料層 ( Data Source )

啊喲 ~ 這不就是 MVC 嗎 ? 我的小腦袋當初也是這樣想,然後開始考慮要不要蓋上書,因為 MVC 的相關書已經夠囉了 ~ 但後來往後翻,它這裡定義的 MVC 好像和我想的又不太一樣呢 ~

接下來我來簡單說一下,這三個層級裡面又分了那些,並且這也是之後的文章方向。

表達層 ( Presentation )

在這本書中的 Web Presentation 章節中,提到了我們最常聽到的 『 MVC 架構』,這裡會順到比較一下我們常聽到的 MVVM、MVP 有啥差別。

  • MVC vs MVVM vs MVP
  • Front Controller
  • Application Controller

領域層 ( Domain )

這個層級基本上會是所有系統最主要的核心,他的組職可以分成以下三類 :

  • 事務腳本 ( A Transaction Script’s )
  • 領域模型 ( A Domain Model’s )
  • 表模塊 ( a Table Module )

基本上組織方式可以分成以上三個。

然後這裡在書中事實上有提到,這裡有個常見的處理方式 :

將 Domain 再切成兩個層級 = Service Layer + Domain Model

詳細內容會在之後的文章說明。順到說一下,之後也會演進到 DDD 與 CQRS 的誕生,基本上應該都是屬於這個層級的事情 ( 我在寫這篇時的想法,所不定之後會變 )。

資料層 ( Data Source )

中文我覺得好難翻譯,自已腦補一下。

  • Table Data GateWay
  • Row Data GateWay
  • Active Record
  • DataMapper

其中這個層級還會多提到這幾樣東西,如下 :

  • Unit of Work : 你可以想成處理資料庫 transaction 的東東
  • Lazy Load
  • DataMapper
  • Repository
  • DAO

我還不知道要放那的

  • Data Transfer Object
  • Remote Facade

小總結

這篇文章應該算是之後文章的小目錄,希望在寫完這幾篇以後,可以畫出一個完整的小地圖

參考資料


上一篇
30-6 之軟體架構設計原則 5 - DIP 依賴反向原則
下一篇
30-8 之 Presentation Layer - MVC ( Model-View-Controller )
系列文
馬克的軟體架構小筆記29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言